/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_depthwise_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/depthwise_conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Backends = sycldnn::types::DefaultBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<DataTypeList, Backends>::type;
using GTestTypePairs = sycldnn::types::ToGTestTypes<SNNTypePairs>::type;

template <typename Pair>
using FilterBackpropWindow1Stride1 =
    sycldnn::depthwise_conv2d::WindowStrideTest<Pair, 1, 1>;
TYPED_TEST_SUITE(FilterBackpropWindow1Stride1, GTestTypePairs);
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {50., 60.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {50., 60.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {90., 100., 110., 120.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {90., 100., 110., 120.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {84., 120.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {84., 120.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {152., 168., 220., 240.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {152., 168., 220., 240.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {288., 304., 320., 336.,
                                         420., 440., 460., 480.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {288., 304., 320., 336.,
                                         420., 440., 460., 480.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {276., 336., 404., 480.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {276., 336., 404., 480.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {524., 552., 640., 672.,
                                         772., 808., 920., 960.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {524., 552., 640., 672.,
                                         772., 808., 920., 960.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1020., 1048., 1076., 1104., 1248., 1280., 1312., 1344.,
      1508., 1544., 1580., 1616., 1800., 1840., 1880., 1920.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1020., 1048., 1076., 1104., 1248., 1280., 1312., 1344.,
      1508., 1544., 1580., 1616., 1800., 1840., 1880., 1920.};
  const std::array<int, 4> in_shape = {{1, 2, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {91.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {91.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {161., 182.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {161., 182.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {301., 322., 343., 364.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {301., 322., 343., 364.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {286., 364.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {286., 364.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {536., 572., 686., 728.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {536., 572., 686., 728.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1036., 1072., 1108., 1144.,
                                         1330., 1372., 1414., 1456.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1036., 1072., 1108., 1144.,
                                         1330., 1372., 1414., 1456.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1006., 1144., 1294., 1456.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1006., 1144., 1294., 1456.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1946., 2012., 2216., 2288.,
                                         2510., 2588., 2828., 2912.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1946., 2012., 2216., 2288.,
                                         2510., 2588., 2828., 2912.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3826., 3892., 3958., 4024., 4360., 4432., 4504., 4576.,
      4942., 5020., 5098., 5176., 5572., 5656., 5740., 5824.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3826., 3892., 3958., 4024., 4360., 4432., 4504., 4576.,
      4942., 5020., 5098., 5176., 5572., 5656., 5740., 5824.};
  const std::array<int, 4> in_shape = {{1, 2, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {204.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {204.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {372., 408.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {372., 408.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {708., 744., 780., 816.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {708., 744., 780., 816.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {680., 816.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {680., 816.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1296., 1360., 1560., 1632.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1296., 1360., 1560., 1632.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2528., 2592., 2656., 2720.,
                                         3048., 3120., 3192., 3264.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2528., 2592., 2656., 2720.,
                                         3048., 3120., 3192., 3264.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2472., 2720., 2984., 3264.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2472., 2720., 2984., 3264.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4824., 4944., 5312., 5440.,
                                         5832., 5968., 6384., 6528.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4824., 4944., 5312., 5440.,
                                         5832., 5968., 6384., 6528.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x2x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9528.,  9648.,  9768.,  9888.,  10496., 10624., 10752., 10880.,
      11528., 11664., 11800., 11936., 12624., 12768., 12912., 13056.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x2x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9528.,  9648.,  9768.,  9888.,  10496., 10624., 10752., 10880.,
      11528., 11664., 11800., 11936., 12624., 12768., 12912., 13056.};
  const std::array<int, 4> in_shape = {{1, 2, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {91.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {91.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {161., 182.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {161., 182.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {301., 322., 343., 364.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {301., 322., 343., 364.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {286., 364.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {286., 364.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {536., 572., 686., 728.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {536., 572., 686., 728.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1036., 1072., 1108., 1144.,
                                         1330., 1372., 1414., 1456.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1036., 1072., 1108., 1144.,
                                         1330., 1372., 1414., 1456.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1006., 1144., 1294., 1456.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1006., 1144., 1294., 1456.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1946., 2012., 2216., 2288.,
                                         2510., 2588., 2828., 2912.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1946., 2012., 2216., 2288.,
                                         2510., 2588., 2828., 2912.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3826., 3892., 3958., 4024., 4360., 4432., 4504., 4576.,
      4942., 5020., 5098., 5176., 5572., 5656., 5740., 5824.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3826., 3892., 3958., 4024., 4360., 4432., 4504., 4576.,
      4942., 5020., 5098., 5176., 5572., 5656., 5740., 5824.};
  const std::array<int, 4> in_shape = {{1, 3, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {285.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {285.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {525., 570.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {525., 570.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1005., 1050., 1095., 1140.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1005., 1050., 1095., 1140.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {969., 1140.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {969., 1140.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1857., 1938., 2190., 2280.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1857., 1938., 2190., 2280.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {3633., 3714., 3795., 3876.,
                                         4290., 4380., 4470., 4560.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {3633., 3714., 3795., 3876.,
                                         4290., 4380., 4470., 4560.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {3561., 3876., 4209., 4560.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {3561., 3876., 4209., 4560.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {6969., 7122., 7590., 7752.,
                                         8247., 8418., 8940., 9120.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {6969., 7122., 7590., 7752.,
                                         8247., 8418., 8940., 9120.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13785., 13938., 14091., 14244., 15018., 15180., 15342., 15504.,
      16323., 16494., 16665., 16836., 17700., 17880., 18060., 18240.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13785., 13938., 14091., 14244., 15018., 15180., 15342., 15504.,
      16323., 16494., 16665., 16836., 17700., 17880., 18060., 18240.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {650.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {650.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1222., 1300.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1222., 1300.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2366., 2444., 2522., 2600.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2366., 2444., 2522., 2600.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2300., 2600.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2300., 2600.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4456., 4600., 5044., 5200.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4456., 4600., 5044., 5200.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8768., 8912.,  9056.,  9200.,
                                         9932., 10088., 10244., 10400.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8768., 8912.,  9056.,  9200.,
                                         9932., 10088., 10244., 10400.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8636., 9200., 9788., 10400.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8636., 9200., 9788., 10400.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16996., 17272., 18112., 18400.,
                                         19276., 19576., 20488., 20800.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16996., 17272., 18112., 18400.,
                                         19276., 19576., 20488., 20800.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33716., 33992., 34268., 34544., 35936., 36224., 36512., 36800.,
      38252., 38552., 38852., 39152., 40664., 40976., 41288., 41600.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33716., 33992., 34268., 34544., 35936., 36224., 36512., 36800.,
      38252., 38552., 38852., 39152., 40664., 40976., 41288., 41600.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {204.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {204.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {372., 408.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {372., 408.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {708., 744., 780., 816.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {708., 744., 780., 816.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {680., 816.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {680., 816.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1296., 1360., 1560., 1632.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1296., 1360., 1560., 1632.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2528., 2592., 2656., 2720.,
                                         3048., 3120., 3192., 3264.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2528., 2592., 2656., 2720.,
                                         3048., 3120., 3192., 3264.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2472., 2720., 2984., 3264.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2472., 2720., 2984., 3264.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4824., 4944., 5312., 5440.,
                                         5832., 5968., 6384., 6528.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4824., 4944., 5312., 5440.,
                                         5832., 5968., 6384., 6528.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9528.,  9648.,  9768.,  9888.,  10496., 10624., 10752., 10880.,
      11528., 11664., 11800., 11936., 12624., 12768., 12912., 13056.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9528.,  9648.,  9768.,  9888.,  10496., 10624., 10752., 10880.,
      11528., 11664., 11800., 11936., 12624., 12768., 12912., 13056.};
  const std::array<int, 4> in_shape = {{1, 4, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {650.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {650.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1222., 1300.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1222., 1300.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2366., 2444., 2522., 2600.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2366., 2444., 2522., 2600.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2300., 2600.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2300., 2600.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4456., 4600., 5044., 5200.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4456., 4600., 5044., 5200.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8768., 8912.,  9056.,  9200.,
                                         9932., 10088., 10244., 10400.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8768., 8912.,  9056.,  9200.,
                                         9932., 10088., 10244., 10400.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8636., 9200., 9788., 10400.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8636., 9200., 9788., 10400.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16996., 17272., 18112., 18400.,
                                         19276., 19576., 20488., 20800.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16996., 17272., 18112., 18400.,
                                         19276., 19576., 20488., 20800.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33716., 33992., 34268., 34544., 35936., 36224., 36512., 36800.,
      38252., 38552., 38852., 39152., 40664., 40976., 41288., 41600.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33716., 33992., 34268., 34544., 35936., 36224., 36512., 36800.,
      38252., 38552., 38852., 39152., 40664., 40976., 41288., 41600.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1496.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1496.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2856., 2992.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2856., 2992.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5576., 5712., 5848., 5984.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5576., 5712., 5848., 5984.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5456., 5984.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5456., 5984.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {10656., 10912., 11696., 11968.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {10656., 10912., 11696., 11968.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {21056., 21312., 21568., 21824.,
                                         23120., 23392., 23664., 23936.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {21056., 21312., 21568., 21824.,
                                         23120., 23392., 23664., 23936.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {20816., 21824., 22864., 23936.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {20816., 21824., 22864., 23936.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {41136., 41632., 43136., 43648.,
                                         45200., 45728., 47328., 47872.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {41136., 41632., 43136., 43648.,
                                         45200., 45728., 47328., 47872.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME1x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      81776., 82272., 82768., 83264., 85760., 86272., 86784., 87296.,
      89872., 90400., 90928., 91456., 94112., 94656., 95200., 95744.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID1x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      81776., 82272., 82768., 83264., 85760., 86272., 86784., 87296.,
      89872., 90400., 90928., 91456., 94112., 94656., 95200., 95744.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {650.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {650.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1222., 1300.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1222., 1300.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2366., 2444., 2522., 2600.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2366., 2444., 2522., 2600.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2300., 2600.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2300., 2600.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4456., 4600., 5044., 5200.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4456., 4600., 5044., 5200.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8768., 8912.,  9056.,  9200.,
                                         9932., 10088., 10244., 10400.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8768., 8912.,  9056.,  9200.,
                                         9932., 10088., 10244., 10400.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8636., 9200., 9788., 10400.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8636., 9200., 9788., 10400.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16996., 17272., 18112., 18400.,
                                         19276., 19576., 20488., 20800.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16996., 17272., 18112., 18400.,
                                         19276., 19576., 20488., 20800.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33716., 33992., 34268., 34544., 35936., 36224., 36512., 36800.,
      38252., 38552., 38852., 39152., 40664., 40976., 41288., 41600.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33716., 33992., 34268., 34544., 35936., 36224., 36512., 36800.,
      38252., 38552., 38852., 39152., 40664., 40976., 41288., 41600.};
  const std::array<int, 4> in_shape = {{3, 2, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2109.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2109.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4047., 4218.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4047., 4218.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7923., 8094., 8265., 8436.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7923., 8094., 8265., 8436.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7770., 8436.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7770., 8436.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {15216., 15540., 16530., 16872.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {15216., 15540., 16530., 16872.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30108., 30432., 30756., 31080.,
                                         32718., 33060., 33402., 33744.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30108., 30432., 30756., 31080.,
                                         32718., 33060., 33402., 33744.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {29802., 31080., 32394., 33744.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {29802., 31080., 32394., 33744.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {58974., 59604., 61512., 62160.,
                                         64122., 64788., 66804., 67488.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {58974., 59604., 61512., 62160.,
                                         64122., 64788., 66804., 67488.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      117318., 117948., 118578., 119208., 122376., 123024., 123672., 124320.,
      127578., 128244., 128910., 129576., 132924., 133608., 134292., 134976.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      117318., 117948., 118578., 119208., 122376., 123024., 123672., 124320.,
      127578., 128244., 128910., 129576., 132924., 133608., 134292., 134976.};
  const std::array<int, 4> in_shape = {{3, 2, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4900.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4900.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {9500., 9800.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {9500., 9800.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {18700., 19000., 19300., 19600.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {18700., 19000., 19300., 19600.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {18424., 19600.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {18424., 19600.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {36272., 36848., 38600., 39200.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {36272., 36848., 38600., 39200.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {71968., 72544., 73120., 73696.,
                                         76600., 77200., 77800., 78400.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {71968., 72544., 73120., 73696.,
                                         76600., 77200., 77800., 78400.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {71416., 73696., 76024., 78400.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {71416., 73696., 76024., 78400.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {141704., 142832., 146240., 147392.,
                                         150872., 152048., 155600., 156800.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {141704., 142832., 146240., 147392.,
                                         150872., 152048., 155600., 156800.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x2x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      282280., 283408., 284536., 285664., 291328., 292480., 293632., 294784.,
      300568., 301744., 302920., 304096., 310000., 311200., 312400., 313600.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x2x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      282280., 283408., 284536., 285664., 291328., 292480., 293632., 294784.,
      300568., 301744., 302920., 304096., 310000., 311200., 312400., 313600.};
  const std::array<int, 4> in_shape = {{3, 2, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2109.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {2109.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4047., 4218.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4047., 4218.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7923., 8094., 8265., 8436.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7923., 8094., 8265., 8436.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7770., 8436.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7770., 8436.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {15216., 15540., 16530., 16872.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {15216., 15540., 16530., 16872.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30108., 30432., 30756., 31080.,
                                         32718., 33060., 33402., 33744.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30108., 30432., 30756., 31080.,
                                         32718., 33060., 33402., 33744.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {29802., 31080., 32394., 33744.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {29802., 31080., 32394., 33744.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {58974., 59604., 61512., 62160.,
                                         64122., 64788., 66804., 67488.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {58974., 59604., 61512., 62160.,
                                         64122., 64788., 66804., 67488.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      117318., 117948., 118578., 119208., 122376., 123024., 123672., 124320.,
      127578., 128244., 128910., 129576., 132924., 133608., 134292., 134976.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      117318., 117948., 118578., 119208., 122376., 123024., 123672., 124320.,
      127578., 128244., 128910., 129576., 132924., 133608., 134292., 134976.};
  const std::array<int, 4> in_shape = {{3, 3, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {6930.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {6930.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {13482., 13860.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {13482., 13860.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {26586., 26964., 27342., 27720.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {26586., 26964., 27342., 27720.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {26235., 27720.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {26235., 27720.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {51741., 52470., 54684., 55440.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {51741., 52470., 54684., 55440.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {102753., 103482., 104211., 104940.,
                                         108612., 109368., 110124., 110880.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {102753., 103482., 104211., 104940.,
                                         108612., 109368., 110124., 110880.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {102051., 104940., 107883., 110880.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {102051., 104940., 107883., 110880.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {202671., 204102., 208422., 209880.,
                                         214281., 215766., 220248., 221760.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {202671., 204102., 208422., 209880.,
                                         214281., 215766., 220248., 221760.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      403911., 405342., 406773., 408204., 415386., 416844., 418302., 419760.,
      427077., 428562., 430047., 431532., 438984., 440496., 442008., 443520.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      403911., 405342., 406773., 408204., 415386., 416844., 418302., 419760.,
      427077., 428562., 430047., 431532., 438984., 440496., 442008., 443520.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16206.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16206.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {31746., 32412.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {31746., 32412.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {62826., 63492., 64158., 64824.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {62826., 63492., 64158., 64824.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {62196., 64824.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {62196., 64824.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {123096., 124392., 128316., 129648.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {123096., 124392., 128316., 129648.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {244896., 246192., 247488., 248784.,
                                         255300., 256632., 257964., 259296.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {244896., 246192., 247488., 248784.,
                                         255300., 256632., 257964., 259296.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {243636., 248784., 254004., 259296.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {243636., 248784., 254004., 259296.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {484716., 487272., 494976., 497568.,
                                         505380., 508008., 515928., 518592.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {484716., 487272., 494976., 497568.,
                                         505380., 508008., 515928., 518592.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      966876.,  969432.,  971988.,  974544.,  987360.,  989952.,
      992544.,  995136.,  1008132., 1010760., 1013388., 1016016.,
      1029192., 1031856., 1034520., 1037184.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      966876.,  969432.,  971988.,  974544.,  987360.,  989952.,
      992544.,  995136.,  1008132., 1010760., 1013388., 1016016.,
      1029192., 1031856., 1034520., 1037184.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4900.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x2x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4900.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {9500., 9800.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x2x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {9500., 9800.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {18700., 19000., 19300., 19600.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x2x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {18700., 19000., 19300., 19600.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {18424., 19600.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x2x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {18424., 19600.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {36272., 36848., 38600., 39200.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x2x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {36272., 36848., 38600., 39200.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {71968., 72544., 73120., 73696.,
                                         76600., 77200., 77800., 78400.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x2x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {71968., 72544., 73120., 73696.,
                                         76600., 77200., 77800., 78400.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {71416., 73696., 76024., 78400.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x2x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {71416., 73696., 76024., 78400.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {141704., 142832., 146240., 147392.,
                                         150872., 152048., 155600., 156800.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x2x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {141704., 142832., 146240., 147392.,
                                         150872., 152048., 155600., 156800.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      282280., 283408., 284536., 285664., 291328., 292480., 293632., 294784.,
      300568., 301744., 302920., 304096., 310000., 311200., 312400., 313600.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x2x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      282280., 283408., 284536., 285664., 291328., 292480., 293632., 294784.,
      300568., 301744., 302920., 304096., 310000., 311200., 312400., 313600.};
  const std::array<int, 4> in_shape = {{3, 4, 2, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16206.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {16206.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {31746., 32412.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {31746., 32412.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {62826., 63492., 64158., 64824.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {62826., 63492., 64158., 64824.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {62196., 64824.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {62196., 64824.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {123096., 124392., 128316., 129648.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {123096., 124392., 128316., 129648.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {244896., 246192., 247488., 248784.,
                                         255300., 256632., 257964., 259296.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {244896., 246192., 247488., 248784.,
                                         255300., 256632., 257964., 259296.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {243636., 248784., 254004., 259296.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {243636., 248784., 254004., 259296.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {484716., 487272., 494976., 497568.,
                                         505380., 508008., 515928., 518592.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {484716., 487272., 494976., 497568.,
                                         505380., 508008., 515928., 518592.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      966876.,  969432.,  971988.,  974544.,  987360.,  989952.,
      992544.,  995136.,  1008132., 1010760., 1013388., 1016016.,
      1029192., 1031856., 1034520., 1037184.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      966876.,  969432.,  971988.,  974544.,  987360.,  989952.,
      992544.,  995136.,  1008132., 1010760., 1013388., 1016016.,
      1029192., 1031856., 1034520., 1037184.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {38024.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {38024.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {74872., 76048.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {74872., 76048.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {148568., 149744., 150920., 152096.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {148568., 149744., 150920., 152096.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {147440., 152096.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {147440., 152096.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {292576., 294880., 301840., 304192.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {292576., 294880., 301840., 304192.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {582848., 585152., 587456., 589760.,
                                         601328., 603680., 606032., 608384.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {582848., 585152., 587456., 589760.,
                                         601328., 603680., 606032., 608384.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {580592., 589760., 599024., 608384.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {580592., 589760., 599024., 608384.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1156624., 1161184., 1174912.,
                                         1179520., 1193392., 1198048.,
                                         1212064., 1216768.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1156624., 1161184., 1174912.,
                                         1179520., 1193392., 1198048.,
                                         1212064., 1216768.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, SAME3x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2308688., 2313248., 2317808., 2322368., 2345216., 2349824.,
      2354432., 2359040., 2382128., 2386784., 2391440., 2396096.,
      2419424., 2424128., 2428832., 2433536.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow1Stride1, VALID3x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2308688., 2313248., 2317808., 2322368., 2345216., 2349824.,
      2354432., 2359040., 2382128., 2386784., 2391440., 2396096.,
      2419424., 2424128., 2428832., 2433536.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}